package com.leetcode.array_matrix;

/**
 * @author Dennis Li
 * @date 2020/9/8 14:24
 */
public class Rotate_48 {

    public static void main(String[] args) {
        int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

        Rotate_48 rotate = new Rotate_48();
        rotate.rotate(matrix);
    }

    // 要求原地修改 O(1) 空间复杂度
    // 旋转双指针
    public void rotate(int[][] matrix) {
        int len = matrix.length;
        for (int k = 0; k < len; k++) {
            if (k >= len - k - 1) break;
            int start = k, end = len - k - 1;
            for (int i = start, j = end - 1; i < end - 1 && j > start; i++, j--) {
//                int angle1 = matrix[start][i];
//                int angle2 = matrix[i][end - 1];
//                int angle3 = matrix[end - 1][j];
//                int angle4 = matrix[j][start];
                int temp = matrix[j][start];

                matrix[j][start] = matrix[end - 1][j];
                matrix[end - 1][j] = matrix[i][end - 1];
                matrix[i][end - 1] = matrix[start][i];
                matrix[start][i] = temp;
//                matrix[start][i] = angle4;
//                matrix[i][end - 1] = angle1;
//                matrix[end - 1][j] = angle2;
//                matrix[j][start] = angle3;
            }
        }
    }

}
